00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DEIDSERVER_HPP
00029 #define DEIDSERVER_HPP
00030
00031 #include "deGlobalTypes.hpp"
00032
00033 #if defined(DEUTIL_DLL_EXPORTS) || defined(DESTINY3D_EXPORT_ALL)
00034 # define DEIDSERVER_API extern "C" DEDLL_EXPORT
00035 #elif defined(DESTINY3D_STATIC_LINK)
00036 # define DEIDSERVER_API extern "C"
00037 #else
00038 # define DEIDSERVER_API extern "C" DEDLL_IMPORT
00039 #endif
00040
00041 #ifdef USING_DESTINY3D
00042 #ifdef _DEBUG
00043 # ifdef DESTINY3D_STATIC_LINK
00044 # pragma comment(lib, "deUtil_sd")
00045 # else
00046 # pragma comment(lib, "deUtild")
00047 # endif //DESTINY3D_STATIC_LINK
00048 #else
00049 # ifdef DESTINY3D_STATIC_LINK
00050 # pragma comment(lib, "deUtil_s")
00051 # else
00052 # pragma comment(lib, "deUtil")
00053 # endif //DESTINY3D_STATIC_LINK
00054 #endif //_DEBUG
00055 #endif //USING_DESTINY3D
00056
00057
00058 class IdeIDServer;
00059 class IdeIDMapper;
00060
00061 DEIDSERVER_API IdeIDServer * IdeIDServer_CreateServer(deBoolean RecycleIDs = deTRUE, int InitialSize = 8);
00062
00063
00064 typedef unsigned long int deID_t;
00065
00066
00067 DE3D_INTERFACE_(IdeIDServer)
00068 {
00069 protected:
00070 virtual ~IdeIDServer() {}
00071 public:
00072 virtual int Release() = 0;
00073
00074 virtual deID_t AddData(void* Data) = 0;
00075 virtual deBoolean AddDataWithID(void* Data, deID_t ID) = 0;
00076 virtual void* LookupData(deID_t ID) = 0;
00077 virtual deBoolean RemoveData(deID_t ID, void* Data) = 0;
00078 virtual void* WalkData(deID_t & ID) = 0;
00079 };
00080
00081
00082 DE3D_INTERFACE_(IdeIDMapper)
00083 {
00084 protected:
00085 virtual ~IdeIDMapper() {}
00086 public:
00087 virtual int Release() = 0;
00088
00089 virtual IdeIDServer*GetMappedIDServer(IdeIDServer* Input) = 0;
00090 virtual deID_t MapID(deID_t InputID) = 0;
00091 };
00092
00093 #endif